package org.exhaust.framework.net.cmpp20.protocol.client;

import io.netty.buffer.ByteBuf;
import lombok.Data;
import org.exhaust.framework.net.cmpp20.protocol.AbstractCMPPBodyClient;
@Data
public class CMPPSubmit extends AbstractCMPPBodyClient {
    /**
     * 信息标识，由 SP 侧短信网关本身产生，
     * 本处填空
     */
    private long msgId;

    /**
     * 相同 Msg_Id 的信息总条数，从 1 开始
     */
    private int pkTotal;

    /**
     * 相同 Msg_Id 的信息序号，从 1 开始
     */
    private int pkNumber;

    /**
     * 是否需要状态报告
     */
    private int registeredDelivery;

    /**
     * 信息级别
     */
    private int msgLevel;

    /**
     * 10个字节
     * 业务类型，是数字、字母和符号的组合。
     */
    private String serviceId;

    /**
     * 计费用户类型字段
     * 0：对目的终端 MSISDN 计费；
     * 1：对源终端 MSISDN 计费；
     * 2：对 SP 计费;
     */
    private int feeUserType;

    private String feeTerminalId = "";

    /**
     * GSM 协议类型。
     */
    private int tpPid;

    /**
     * GSM 协议类型
     */
    private int tpUdhi;

    /**
     * 信息格式
     * 0： ASCII 串
     * 3：短信写卡操作
     * 4：二进制信息
     * 8： UCS2 编码
     * 15：含 GB 汉字
     */
    private int msgFmt;

    /**
     * 6个字节
     */
    private String msgSrc;

    /**
     * 01：对“计费用户号码”免费
     * 02：对“计费用户号码”按条计信息费
     * 03： 对“计费用户号码” 按包月收取信息
     * 费
     * 04：对“计费用户号码”的信息费封顶
     * 05：对“计费用户号码”的收费是由 SP实现
     */
    private String feeType;

    /**
     * 资费代码
     */
    private String feeCode;

    /**
     * 存活有效期
     */
    private String validTime;

    /**
     * 定时发送时间
     */
    private String atTime;

    /**
     * 21个字节，原号码
     */
    private String srcId;

    /**
     * 接受消息的用户数量
     */
    private int destUsrTl;

    /**
     *21乘以destUsrTl个字节
     */
    private int destTerminalId;

    /**
     * 信息长度(Msg_Fmt 值为 0 时： <160 个字
     * 节；其它<=140 个字节)
     */
    private int msgLength;

    /**
     * 信息内容
     */
    private String msgContent;

    /**
     * 8个字节保留内容
     */
    private String reserve="";
    @Override
    protected long getCommandType() {
        return 0x00000004;
    }

    @Override
    protected void encodeData(ByteBuf out) {

    }
}
